﻿using System.Threading.Tasks;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using CorreoSocialWeb.Models;

namespace CorreoSocialWeb
{
    public class EmailService : IIdentityMessageService
    {
        public void Enviar(string destinatario, string asunto, string mensaje)
        {
            int MaxReintentos = 10;
            int intentoNro = 0;
            System.Exception ex = null;

            while (intentoNro < MaxReintentos)
            {
                intentoNro ++;

                try
                {
                    var credentials = new System.Net.NetworkCredential("noresponder1@correosocial.com.ar", "pepemonje01");

                    SMTPMail.Send(credentials, asunto, destinatario, mensaje);

                    // salgo
                    intentoNro = MaxReintentos;
                    ex = null;
                }
                catch (System.Exception)
                {
                    ex = new System.Web.HttpException("Hubo un error al enviar el mail de confirmación.");
                }
            }

            if (ex != null)
                throw ex;
        }

        public Task SendAsync(IdentityMessage message)
        {
            this.Enviar(message.Destination, message.Subject, message.Body);
                
            return Task.FromResult(0);
        }
    }
}